Traditionally, users of computing devices have been forced to provide input to processes executing on those computing devices in the manner specified by those processes. Thus, for example, to perform calculations in a spreadsheet application program executing on a computing device, a user is forced to enter the values and the formulas that the user desires to have calculated in the manner specified by the spreadsheet application program. As another example, to select a different font in a word processing application program executing on a computing device, a user is forced to select typographic information via the mechanisms provided by the word processing application. While such mechanisms may become second nature to users that continually interact with such application programs executing on computing devices, they are, nevertheless, different from the manner in which users traditionally communicate with one another.
As the processing capabilities of computing devices have increased, a greater number of application programs executing on those computing devices have been designed to accept input that is more naturally provided by users. For example, one increasingly common input mechanism is for a user to speak, or otherwise linguistically enter, what they seek to have an application program perform, and the application program can then interpret such linguistic input and respond accordingly. By providing application programs with the capability to respond to linguistic input, the programmers of such application programs are providing application programs that are easier for users to learn and utilize.
Unfortunately, linguistic input is dependent upon the language being spoken by the user. Thus, an application program that was designed to accept linguistic input provided in one language will not be able to understand linguistic input provided in another, different language. Due to the variety of languages spoken by users around the world, and due to the substantial linguistic differences between them, developers of application programs that desire to have their application programs accept linguistic input are forced to create different versions of those application programs for each of the different languages that such application programs will support.
More significantly, the process of creating an application program that can accept linguistic input can be time-consuming and expensive. For example, substantial time and resource investment can be directed towards training a language understanding component of such an application program to be able to accurately decipher a user's intent from the linguistic input provided by the user. And it is precisely such a language understanding component that must, then, be re-created for each language that an application developer desires their application program to support.